home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / GNU / GNUPLOTsrc.lha / term / tek.trm < prev    next >
Encoding:
Text File  |  1996-01-23  |  16.7 KB  |  752 lines

  1. /*
  2.  * $Id: tek.trm,v 1.11 1995/12/20 21:48:14 drd Exp $
  3.  *
  4.  */
  5.  
  6. /* GNUPLOT - tek.trm */
  7. /*
  8.  * Copyright (C) 1990 - 1993   
  9.  *
  10.  * Permission to use, copy, and distribute this software and its
  11.  * documentation for any purpose with or without fee is hereby granted, 
  12.  * provided that the above copyright notice appear in all copies and 
  13.  * that both that copyright notice and this permission notice appear 
  14.  * in supporting documentation.
  15.  *
  16.  * Permission to modify the software is granted, but not the right to
  17.  * distribute the modified code.  Modifications are to be distributed 
  18.  * as patches to released version.
  19.  *  
  20.  * This software  is provided "as is" without express or implied warranty.
  21.  * 
  22.  * This file is included by ../term.c.
  23.  *
  24.  * This terminal driver supports:
  25.  *  tek40xx, bitgraph, kermit_color_tek40xx, kermit_mono_tek40xx, selanar
  26.  *  ln03plus
  27.  *
  28.  * AUTHORS
  29.  *   Colin Kelley, Thomas Williams, Russell Lang
  30.  * 
  31.  * send your comments or suggestions to (info-gnuplot@dartmouth.edu).
  32.  * 
  33.  */
  34.  
  35. /*
  36.  * Modified June 1995 Ian MacPhedran to support newterm format
  37.  */
  38. #define TEK
  39. #define CTEK
  40. #define VTTEK
  41. #define KERMIT
  42. #define SELANAR
  43. #define BITGRAPH
  44.  
  45. #ifndef GOT_DRIVER_H
  46. #include "driver.h"
  47. #endif /* GOT_DRIVER_H */
  48.  
  49. #ifdef TERM_REGISTER
  50. register_term(tek40)
  51. #ifdef VTTEK
  52. register_term(vttek)
  53. #endif
  54. #ifdef KERMIT
  55. register_term(kc_tek40)
  56. register_term(km_tek40)
  57. #endif
  58. #ifdef SELANAR
  59. register_term(selanar)
  60. #endif
  61. #ifdef BITGRAPH
  62. register_term(bitgraph)
  63. #endif
  64. #endif /* TERM_REGISTER */
  65.  
  66. #ifdef TERM_PROTO
  67. TERM_PUBLIC void TEK40init __P((void));
  68. TERM_PUBLIC void TEK40graphics __P((void));
  69. TERM_PUBLIC void TEK40text __P((void));
  70. TERM_PUBLIC void TEK40linetype __P((int linetype));
  71. TERM_PUBLIC void TEK40move __P((unsigned int x, unsigned int y));
  72. TERM_PUBLIC void TEK40vector __P((unsigned int x, unsigned int y));
  73. TERM_PUBLIC void TEK40put_text __P((unsigned int x, unsigned int y, char str[]));
  74. TERM_PUBLIC void TEK40reset __P((void));
  75. TERM_PUBLIC void BG_text __P((void));
  76. TERM_PUBLIC void BG_put_text __P((unsigned int x, unsigned int y, char str[]));
  77. TERM_PUBLIC void KTEK40graphics __P((void));
  78. TERM_PUBLIC void KTEK40Ctext __P((void));
  79. TERM_PUBLIC void KTEK40Clinetype __P((int linetype));
  80. TERM_PUBLIC void KTEK40Mlinetype __P((int linetype));
  81. TERM_PUBLIC void KTEK40reset __P((void));
  82. TERM_PUBLIC void SEL_init __P((void));
  83. TERM_PUBLIC void SEL_graphics __P((void));
  84. TERM_PUBLIC void SEL_text __P((void));
  85. TERM_PUBLIC void SEL_reset __P((void));
  86. TERM_PUBLIC void VTTEK40init __P((void));
  87. TERM_PUBLIC void VTTEK40reset __P((void));
  88. TERM_PUBLIC void VTTEK40linetype __P((int linetype));
  89. TERM_PUBLIC void VTTEK40put_text __P((unsigned int x, unsigned int y, char str[]));
  90. TERM_PUBLIC void CTEK_linetype __P((int linetype));
  91. TERM_PUBLIC void CTEK_move __P((unsigned int x, unsigned int y));
  92. TERM_PUBLIC void CTEK_vector __P((unsigned int x, unsigned int y));
  93.  
  94. #define GOT_TEK40_PROTO
  95. #endif /* TERM_PROTO */
  96.  
  97. #ifndef TERM_PROTO_ONLY
  98. #ifdef TERM_BODY
  99.  
  100. #ifdef TEK
  101.  
  102. #define TEK40XMAX 1024
  103. #define TEK40YMAX 780
  104.  
  105. #define TEK40XLAST (TEK40XMAX - 1)
  106. #define TEK40YLAST (TEK40YMAX - 1)
  107.  
  108. #define TEK40VCHAR        25
  109. #define TEK40HCHAR        14
  110. #define TEK40VTIC        11
  111. #define TEK40HTIC        11    
  112.  
  113. #define HX 0x20        /* bit pattern to OR over 5-bit data */
  114. #define HY 0x20
  115. #define LX 0x40
  116. #define LY 0x60
  117.  
  118. #define LOWER5 31
  119. #define UPPER5 (31<<5)
  120.  
  121.  
  122. TERM_PUBLIC void TEK40init()
  123. {
  124. }
  125.  
  126.  
  127. TERM_PUBLIC void TEK40graphics()
  128. {
  129. #ifdef vms
  130.     term_pasthru();
  131. #endif /* vms */
  132.     fprintf(outfile,"\033\014");
  133. /*                   1
  134.     1. clear screen
  135. */
  136.     (void) fflush(outfile);
  137.     sleep(1);  
  138.     /* sleep 1 second to allow screen time to clear on real 
  139.        tektronix terminals */
  140. }
  141.  
  142. TERM_PUBLIC void TEK40text()
  143. {
  144.     TEK40move(0,12);
  145.     fprintf(outfile,"\037");
  146. /*                   1
  147.     1. into alphanumerics
  148. */
  149. #ifdef vms
  150.     term_nopasthru();
  151. #endif /* vms */
  152. }
  153.  
  154.  
  155. TERM_PUBLIC void TEK40linetype(linetype)
  156. int linetype;
  157. {
  158. }
  159.  
  160. TERM_PUBLIC void TEK40move(x,y)
  161. unsigned int x,y;
  162. {
  163.     (void) putc('\035', outfile);    /* into graphics */
  164.     TEK40vector(x,y);
  165. }
  166.  
  167.  
  168. TERM_PUBLIC void TEK40vector(x,y)
  169. unsigned int x,y;
  170. {
  171.     (void) putc((HY | (y & UPPER5)>>5), outfile);
  172.     (void) putc((LY | (y & LOWER5)), outfile);
  173.     (void) putc((HX | (x & UPPER5)>>5), outfile);
  174.     (void) putc((LX | (x & LOWER5)), outfile);
  175. }
  176.  
  177.  
  178. TERM_PUBLIC void TEK40put_text(x,y,str)
  179. unsigned int x,y;
  180. char str[];
  181. {
  182.     TEK40move(x,y-11);
  183.     fprintf(outfile,"\037%s\n",str);
  184. }
  185.  
  186.  
  187. TERM_PUBLIC void TEK40reset()
  188. {
  189. }
  190.  
  191. #endif /* TEK */
  192.  
  193.  
  194.  
  195. /* thanks to dukecdu!evs (Ed Simpson) for the BBN BitGraph driver */
  196.  
  197. #ifdef BITGRAPH
  198.  
  199. #define BG_XMAX                 768 /* width of plot area */
  200. #define BG_YMAX                 768 /* height of plot area */
  201. #define BG_SCREEN_HEIGHT    1024 /* full screen height */
  202.  
  203. #define BG_XLAST     (BG_XMAX - 1)
  204. #define BG_YLAST     (BG_YMAX - 1)
  205.  
  206. #define BG_VCHAR    16
  207. #define BG_HCHAR     9
  208. #define BG_VTIC         8
  209. #define BG_HTIC         8    
  210.  
  211.  
  212. #define BG_init TEK40init
  213.  
  214. #define BG_graphics TEK40graphics
  215.  
  216.  
  217. #define BG_linetype TEK40linetype
  218.  
  219. #define BG_move TEK40move
  220.  
  221. #define BG_vector TEK40vector
  222.  
  223.  
  224. TERM_PUBLIC void BG_text()
  225. {
  226.     BG_move(0, BG_SCREEN_HEIGHT - 2 * BG_VCHAR);
  227.     fprintf(outfile,"\037");
  228. /*                   1
  229.     1. into alphanumerics
  230. */
  231. }
  232.  
  233.  
  234. TERM_PUBLIC void BG_put_text(x,y,str)
  235. unsigned int x,y;
  236. char str[];
  237. {
  238.     BG_move(x,y-11);
  239.     fprintf(outfile,"\037%s\n",str);
  240. }
  241.  
  242.  
  243. #define BG_reset TEK40reset
  244.  
  245. #endif /* BITGRAPH */
  246.  
  247.  
  248. /* Color and Monochrome specials for the MS-DOS Kermit Tektronix Emulator
  249.    by Russell Lang,  eln272v@monu1.cc.monash.oz  */
  250.  
  251. #ifdef KERMIT
  252.  
  253. #define KTEK40HCHAR        13
  254.  
  255. TERM_PUBLIC void KTEK40graphics()
  256. {
  257. #ifdef vms
  258.         term_mode_tek();
  259.     term_pasthru();
  260. #endif /* vms */
  261.     fprintf(outfile,"\033\014");
  262. /*                   1
  263.     1. clear screen
  264. */
  265.     /* kermit tektronix emulation doesn't need to wait */
  266. }
  267.  
  268. TERM_PUBLIC void KTEK40Ctext()
  269. {
  270.     TEK40text();
  271.     KTEK40Clinetype(0);  /* change to green */
  272. #ifdef vms
  273.     term_nopasthru();
  274. #endif /* vms */
  275. }
  276.  
  277. /* special color linetypes for MS-DOS Kermit v2.31 tektronix emulator */
  278. /*    0 = normal, 1 = bright 
  279.     foreground color (30-37) = 30 + colors
  280.         where colors are   1=red, 2=green, 4=blue */
  281. static char *kermit_color[15]= {"\033[0;37m","\033[1;30m",
  282.         "\033[0;32m","\033[0;36m","\033[0;31m","\033[0;35m",
  283.         "\033[1;34m","\033[1;33m","\033[1;31m","\033[1;37m",
  284.         "\033[1;35m","\033[1;32m","\033[1;36m","\033[0;34m",
  285.         "\033[0;33m"};
  286.  
  287. TERM_PUBLIC void KTEK40Clinetype(linetype)
  288. int linetype;
  289. {
  290.     if (linetype >= 13)
  291.         linetype %= 13;
  292.     fprintf(outfile,"%s",kermit_color[linetype+2]);
  293. }
  294.  
  295.  
  296. /* linetypes for MS-DOS Kermit v2.30 tektronix emulator */
  297. /* `=solid, a=fine dots, b=short dashes, c=dash dot, 
  298.    d=long dash dot, e=dash dot dot */
  299. static char *kerm_linetype = "`a`abcde" ;
  300.  
  301. TERM_PUBLIC void KTEK40Mlinetype(linetype)
  302. int linetype;
  303. {
  304.     if (linetype >= 6)
  305.         linetype %= 6;
  306.     fprintf(outfile,"\033%c",kerm_linetype[linetype+2]);
  307. }
  308.  
  309. TERM_PUBLIC void KTEK40reset()
  310. {
  311.     fprintf(outfile,"\030\n");  /* turn off Tek emulation */
  312. #ifdef vms
  313.     term_mode_native();
  314. #endif /* vms */
  315. }
  316.  
  317. #endif /* KERMIT */
  318.  
  319.  
  320. /* thanks to sask!macphed (Geoff Coleman and Ian Macphedran) for the
  321.    Selanar driver */
  322.  
  323. #ifdef SELANAR
  324.  
  325. TERM_PUBLIC void SEL_init()
  326. {
  327.     fprintf(outfile,"\033\062");
  328. /*                    1
  329.     1. set to ansi mode
  330. */
  331. }
  332.  
  333.  
  334. TERM_PUBLIC void SEL_graphics()
  335. {
  336.     fprintf(outfile,"\033[H\033[J\033\061\033\014");
  337. /*                   1           2       3
  338.     1. clear ANSI screen
  339.     2. set to TEK mode
  340.     3. clear screen
  341. */
  342. }
  343.  
  344.  
  345. TERM_PUBLIC void SEL_text()
  346. {
  347.     TEK40move(0,12);
  348.     fprintf(outfile,"\033\062");
  349. /*                   1
  350.     1. into ANSI mode
  351. */
  352. }
  353.  
  354. TERM_PUBLIC void SEL_reset()
  355. {
  356.     fprintf(outfile,"\033\061\033\012\033\062\033[H\033[J");
  357. /*                   1        2       3      4
  358. 1       set tek mode
  359. 2       clear screen
  360. 3       set ansi mode
  361. 4       clear screen
  362. */
  363. }
  364. #endif /* SELANAR */
  365.  
  366. #ifdef VTTEK
  367.  
  368. TERM_PUBLIC void VTTEK40init()
  369. {
  370.         fprintf(outfile,"\033[?38h");
  371.         fflush(outfile);
  372.         sleep(1);
  373.         /* sleep 1 second to allow screen time to clear on some terminals */
  374. #ifdef vms
  375.         term_mode_tek();
  376. #endif /* vms */
  377. }
  378.  
  379. TERM_PUBLIC void VTTEK40reset()
  380. {
  381.         fprintf(outfile,"\033[?38l");
  382.         fflush(outfile);
  383.         sleep(1);
  384.         /* sleep 1 second to allow screen time to clear on some terminals */
  385. #ifdef vms
  386.         term_mode_native();
  387. #endif /* vms */
  388. }
  389.  
  390. /* linetypes for VT-type terminals in tektronix emulator mode */
  391. /* `=solid, a=fine dots, b=short dashes, c=dash dot,
  392.    d=long dash dot, h=bold solid, i=bold fine dots, j=bold short dashes,
  393.    k=bold dash dot, l=bold long dash dot */
  394. static char *vt_linetype = "`a`abcdhijkl" ;
  395. static int last_vt_linetype = 0;
  396. TERM_PUBLIC void VTTEK40linetype(linetype)
  397. int linetype;
  398. {
  399.         if (linetype >= 10)
  400.                 linetype %= 10;
  401.         fprintf(outfile,"\033%c",vt_linetype[linetype+2]);
  402.         last_vt_linetype = linetype;
  403. }
  404.  
  405. TERM_PUBLIC void VTTEK40put_text(x,y,str)
  406. unsigned int x,y;
  407. char str[];
  408. {
  409.         int linetype;
  410.         linetype = last_vt_linetype;
  411.         VTTEK40linetype(0);
  412.         TEK40put_text(x,y,str);
  413.         VTTEK40linetype(linetype);
  414. }
  415.  
  416. #endif /* VTTEK */
  417.  
  418. #ifdef LN03P
  419.  
  420. TERM_PUBLIC void LN03Pinit()
  421. {
  422.     fprintf(outfile,"\033[?38h");
  423. }
  424.  
  425. TERM_PUBLIC void LN03Preset()
  426. {
  427.     fprintf(outfile,"\033[?38l");
  428. }
  429. #endif /* LN03P */
  430.  
  431.  
  432.  
  433. /* tek40xx (monochrome) with linetype support by Jay I. Choe */
  434. #ifdef CTEK
  435.  
  436. /* these are common and maybe defined before */
  437. #ifndef ABS
  438. #define ABS(A) (((A)>=0)? (A):-(A))
  439. #endif
  440.  
  441. /* these are common and maybe defined before */ 
  442. /* e.g. in AMIGA intuition.h */
  443. #ifndef SIGN
  444. #define SIGN(A) (((A) >= 0)? 1:-1)
  445. #endif
  446.  
  447. static void CT_solid_vector __P((int x, int y));
  448. static void CT_draw_vpoint __P((int x, int y, int last));
  449. static void CT_pattern_vector __P((int x1, int y1));
  450.  
  451. /* CT_lines are line types defined as bit pattern */
  452. static unsigned long CT_lines[]=
  453. {  0xffffffff,  /* solid line */
  454.    0x000fffff,  /* long dash */
  455.    0x00ff00ff,  /* short dash */
  456.    0x00f00fff,  /* dash-dot */
  457.    0x00f07fff,  /* long dash - dot */
  458.    0x07070707,
  459.    0x07ff07ff,
  460.    0x070707ff};
  461.  
  462. /* current line pattern */
  463. static unsigned long *CT_pattern = &CT_lines[0];
  464.  
  465. /* we need to keep track of tek cursor location */
  466. static int CT_last_linetype=0, CT_last_x,CT_last_y;
  467.  
  468. TERM_PUBLIC void CTEK_linetype(linetype)
  469. int linetype;
  470. {
  471.   if(linetype<0) linetype=0;
  472.   linetype %= (sizeof(CT_lines)/sizeof(unsigned long));
  473.   CT_pattern= &CT_lines[linetype];
  474.   CT_last_linetype=linetype;
  475. }
  476.  
  477. TERM_PUBLIC void CTEK_move(x, y)
  478. unsigned int x;
  479. unsigned int y;
  480. {
  481.   TEK40move(x,y);
  482.   CT_last_x=x;
  483.   CT_last_y=y;
  484. }
  485.  
  486. static void CT_solid_vector(x, y)
  487. int x;
  488. int y;
  489. {
  490.   TEK40vector(x,y);
  491.   CT_last_x=x;
  492.   CT_last_y=y;
  493. }
  494.  
  495. /*
  496.    simulate pixel draw using tek vector draw.
  497.    delays actual line drawing until maximum line segment is determined
  498.    (or first/last point is defined)
  499. */
  500. static int CT_penon=0; /* is Pen on? */
  501.  
  502. static void CT_draw_vpoint(x, y,last)
  503. int x;
  504. int y;
  505. int last;
  506. {
  507.   static int xx0, yy0,xx1,yy1;
  508.  
  509.   if((*CT_pattern) & 1) {
  510.     if(CT_penon) { /* This point is a continuation of current line */
  511.       xx1=x;
  512.       yy1=y;
  513.     }
  514.     else { /* beginning of new line */
  515.       xx0=xx1=x;
  516.       yy0=yy1=y;
  517.       CT_penon=1;
  518.     }
  519.     *CT_pattern = ((*CT_pattern)>>1) | 0x80000000; /* rotate the pattern */
  520.     if(last) { /* draw the line anyway if this is the last point */
  521.       TEK40move(xx0,yy0);
  522.       TEK40vector(xx1,yy1);
  523.       CT_penon=0;
  524.     }
  525.   }
  526.   else { /* do not draw this pixel */
  527.     if(CT_penon) { /* last line segment ended at the previous pixel. */
  528.                    /* draw the line */
  529.       TEK40move(xx0,yy0);
  530.       TEK40vector(xx1,yy1);
  531.       CT_penon=0;
  532.     }
  533.     *CT_pattern = (*CT_pattern)>>1; /* rotate the current pattern */
  534.   }
  535. }
  536.  
  537. /*
  538.    draw vector line with pattern
  539. */
  540.  
  541. static void CT_pattern_vector(x1, y1)
  542. int x1;
  543. int y1;
  544. {
  545.   int op; /* order parameter */
  546.   int x0 = CT_last_x;
  547.   int y0 = CT_last_y;
  548.   int dx = x1-x0;
  549.   int dy = y1-y0;
  550.   int ax = ABS(dx) << 1;
  551.   int ay = ABS(dy) << 1;
  552.   int sx = SIGN(dx);
  553.   int sy = SIGN(dy);
  554.  
  555.   if(ax >= ay) {
  556.     for(op = ay - (ax >> 1); x0 != x1; x0 += sx, op += ay) {
  557.       CT_draw_vpoint(x0,y0,0);
  558.       if(op >0 || (op==0 && sx==1)) {
  559.     op -= ax;
  560.     y0 += sy;
  561.       }
  562.     }
  563.   }
  564.   else {  /* ax < ay */
  565.     for(op = ax - (ay >> 1); y0 != y1 ; y0 += sy, op += ax) {
  566.       CT_draw_vpoint(x0,y0,0);
  567.       if(op >0 || (op==0 && sy==1)) {
  568.     op -= ay;
  569.     x0 += sx;
  570.       }
  571.     }
  572.   }
  573.   CT_draw_vpoint(x0,y0,1); /* last point */
  574.   CT_last_x=x1;
  575.   CT_last_y=y1;
  576. }
  577.  
  578. TERM_PUBLIC void CTEK_vector(x, y)
  579. unsigned int x;
  580. unsigned int y;
  581. {
  582.   if(CT_last_linetype<=0)
  583.     CT_solid_vector(x,y);
  584.   else
  585.     CT_pattern_vector(x,y);
  586. }
  587.  
  588. #endif /* CTEK */
  589. #endif /* TERM_BODY */
  590.  
  591. #ifdef TERM_TABLE
  592.  
  593. TERM_TABLE_START(tek40_driver)
  594. #ifndef CTEK
  595.    "tek40xx", "Tektronix 4010 and others; most TEK emulators",
  596.            TEK40XMAX, TEK40YMAX, TEK40VCHAR, TEK40HCHAR, 
  597.            TEK40VTIC, TEK40HTIC, options_null, TEK40init, TEK40reset, 
  598.            TEK40text, null_scale, TEK40graphics, TEK40move, TEK40vector, 
  599.            TEK40linetype, TEK40put_text, null_text_angle, 
  600.            null_justify_text, line_and_point, do_arrow, set_font_null
  601. #else
  602.    "tek40xx","Tektronix 4010 and others; most TEK emulators",
  603.         TEK40XMAX, TEK40YMAX, TEK40VCHAR, TEK40HCHAR,
  604.         TEK40VTIC, TEK40HTIC, options_null, TEK40init, TEK40reset,
  605.         TEK40text, null_scale, TEK40graphics, CTEK_move, CTEK_vector, 
  606.         CTEK_linetype, TEK40put_text, null_text_angle, 
  607.         null_justify_text, line_and_point, do_arrow, set_font_null
  608. #endif
  609. TERM_TABLE_END(tek40_driver)
  610. #undef LAST_TERM
  611. #define LAST_TERM tek40_driver
  612.  
  613. #ifdef VTTEK
  614. TERM_TABLE_START(vttek_driver)
  615.    "vttek", "VT-like tek40xx terminal emulator",
  616.        TEK40XMAX,TEK40YMAX,TEK40VCHAR, TEK40HCHAR,
  617.        TEK40VTIC, TEK40HTIC, options_null, VTTEK40init, VTTEK40reset,
  618.        TEK40text, null_scale, TEK40graphics, TEK40move, TEK40vector,
  619.        VTTEK40linetype, VTTEK40put_text, null_text_angle,
  620.        null_justify_text, line_and_point, do_arrow, set_font_null
  621. TERM_TABLE_END(vttek_driver)
  622. #undef LAST_TERM
  623. #define LAST_TERM vttek_driver
  624. #endif
  625.  
  626. #ifdef KERMIT
  627. TERM_TABLE_START(kc_tek40_driver)
  628.    "kc_tek40xx", "MS-DOS Kermit Tek4010 terminal emulator - color",
  629.            TEK40XMAX,TEK40YMAX,TEK40VCHAR, KTEK40HCHAR, 
  630.            TEK40VTIC, TEK40HTIC, options_null, TEK40init, KTEK40reset, 
  631.            KTEK40Ctext, null_scale, KTEK40graphics, TEK40move, TEK40vector, 
  632.            KTEK40Clinetype, TEK40put_text, null_text_angle, 
  633.            null_justify_text, do_point, do_arrow, set_font_null
  634. TERM_TABLE_END(kc_tek40_driver)
  635.  
  636. TERM_TABLE_START(km_tek40_driver)
  637.    "km_tek40xx", "MS-DOS Kermit Tek4010 terminal emulator - monochrome",
  638.            TEK40XMAX,TEK40YMAX,TEK40VCHAR, KTEK40HCHAR, 
  639.            TEK40VTIC, TEK40HTIC, options_null, TEK40init, KTEK40reset, 
  640.            TEK40text, null_scale, KTEK40graphics, TEK40move, TEK40vector, 
  641.            KTEK40Mlinetype, TEK40put_text, null_text_angle, 
  642.            null_justify_text, line_and_point, do_arrow, set_font_null
  643. TERM_TABLE_END(km_tek40_driver)
  644. #undef LAST_TERM
  645. #define LAST_TERM km_tek40_driver
  646. #endif
  647.  
  648. #ifdef SELANAR
  649. TERM_TABLE_START(selanar_driver)
  650.    "selanar", "Selanar",
  651.            TEK40XMAX, TEK40YMAX, TEK40VCHAR, TEK40HCHAR, 
  652.            TEK40VTIC, TEK40HTIC, options_null, SEL_init, SEL_reset, 
  653.            SEL_text, null_scale, SEL_graphics, TEK40move, TEK40vector, 
  654.            TEK40linetype, TEK40put_text, null_text_angle, 
  655.            null_justify_text, line_and_point, do_arrow, set_font_null
  656. TERM_TABLE_END(selanar_driver)
  657. #undef LAST_TERM
  658. #define LAST_TERM selanar_driver
  659. #endif
  660.  
  661. #ifdef BITGRAPH
  662. TERM_TABLE_START(bitgraph_driver)
  663.    "bitgraph", "BBN Bitgraph Terminal",
  664.            BG_XMAX,BG_YMAX,BG_VCHAR, BG_HCHAR, 
  665.            BG_VTIC, BG_HTIC, options_null, BG_init, BG_reset, 
  666.            BG_text, null_scale, BG_graphics, BG_move, BG_vector,
  667.            BG_linetype, BG_put_text, null_text_angle, 
  668.            null_justify_text, line_and_point, do_arrow, set_font_null
  669. TERM_TABLE_END(bitgraph_driver)
  670. #undef LAST_TERM
  671. #define LAST_TERM bitgraph_drive
  672. #endif
  673.  
  674. #endif /* TERM_TABLE */
  675.  
  676. #endif /* TERM_PROTO_ONLY */
  677.  
  678. /*
  679.  * NAME: tek40xx
  680.  *
  681.  * OPTIONS: none
  682.  *
  683.  * SUPPORTS: Tektronix 4010 and others; most TEK emulators
  684.  *
  685.  * Further Info: none 
  686.  *
  687.  */
  688.  
  689. #ifdef VTTEK
  690. /*
  691.  * NAME: vttek
  692.  *
  693.  * OPTIONS: none
  694.  *
  695.  * SUPPORTS: VT-like tek40xx terminal emulator
  696.  *
  697.  * Further Info: none 
  698.  *
  699.  */
  700. #endif /* VTTEK */
  701.  
  702. #ifdef KERMIT
  703. /*
  704.  * NAME: kc_tek40xx
  705.  *
  706.  * OPTIONS: none
  707.  *
  708.  * SUPPORTS: MS-DOS Kermit Tek4010 terminal emulator
  709.  *
  710.  * Further Info: colour version. There is also a terminal (km_tek40xx)
  711.  *         that supports monochrome graphics.
  712.  *
  713.  */
  714. /*
  715.  * NAME: km_tek40xx
  716.  *
  717.  * OPTIONS: none
  718.  *
  719.  * SUPPORTS: MS-DOS Kermit Tek4010 terminal emulator
  720.  *
  721.  * Further Info: monochrome version. There is also a terminal (kc_tek40xx)
  722.  *         that supports colour graphics.
  723.  *
  724.  */
  725. #endif /* KERMIT */
  726.  
  727. #ifdef SELANAR
  728. /*
  729.  * NAME: selanar
  730.  *
  731.  * OPTIONS: none
  732.  *
  733.  * SUPPORTS: selanar
  734.  *
  735.  * Further Info: none
  736.  *
  737.  */
  738. #endif /* SELANAR */
  739.  
  740. #ifdef BITGRAPH
  741. /*
  742.  * NAME: bitgraph
  743.  *
  744.  * OPTIONS: none
  745.  *
  746.  * SUPPORTS: BBN Bitgraph Terminal
  747.  *
  748.  * Further Info: none
  749.  *
  750.  */
  751. #endif /* BITGRAPH */
  752.